home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / TeXsource / web2ctex / ctex / c / tex3 < prev    next >
Encoding:
Text File  |  1988-05-19  |  45.6 KB  |  2,165 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. scanint () {
  5.     /* 30 */ scanint_regmem 
  6.   boolean negative  ; 
  7.   integer m  ; 
  8.   smallnumber d  ; 
  9.   boolean vacuous  ; 
  10.   boolean OKsofar  ; 
  11.   radix = 0 ; 
  12.   OKsofar = true ; 
  13.   negative = false ; 
  14.   do {
  15.       do { getxtoken () ; 
  16.     } while ( ! ( curcmd != 10 ) ) ; 
  17.     if ( curtok == 3117 ) 
  18.     {
  19.       negative = ! negative ; 
  20.       curtok = 3115 ; 
  21.     } 
  22.   } while ( ! ( curtok != 3115 ) ) ; 
  23.   if ( curtok == 3168 ) 
  24.   {
  25.     gettoken () ; 
  26.     if ( curtok < 4096 ) 
  27.     {
  28.       curval = curchr ; 
  29.       if ( curcmd <= 2 ) 
  30.       if ( curcmd == 2 ) 
  31.       incr ( alignstate ) ; 
  32.       else decr ( alignstate ) ; 
  33.     } 
  34.     else if ( curtok < 4225 ) 
  35.     curval = curtok - 4097 ; 
  36.     else curval = curtok - 4225 ; 
  37.     if ( curval > 127 ) 
  38.     {
  39.       {
  40.     if ( interaction == 3 ) 
  41.     wakeupterminal () ; 
  42.     printnl ( 133 ) ; 
  43.     print ( 555 ) ; 
  44.       } 
  45.       {
  46.     helpptr = 2 ; 
  47.     helpline [ 1 ] = 556 ; 
  48.     helpline [ 0 ] = 557 ; 
  49.       } 
  50.       curval = 48 ; 
  51.       backerror () ; 
  52.     } 
  53.     else {
  54.     
  55.       getxtoken () ; 
  56.       if ( curcmd != 10 ) 
  57.       backinput () ; 
  58.     } 
  59.   } 
  60.   else if ( ( curcmd >= 67 ) && ( curcmd <= 88 ) ) 
  61.   scansomethinginterna ( 0 , false ) ; 
  62.   else {
  63.       
  64.     radix = 10 ; 
  65.     m = 214748364L ; 
  66.     if ( curtok == 3111 ) 
  67.     {
  68.       radix = 8 ; 
  69.       m = 268435456L ; 
  70.       getxtoken () ; 
  71.     } 
  72.     else if ( curtok == 3106 ) 
  73.     {
  74.       radix = 16 ; 
  75.       m = 134217728L ; 
  76.       getxtoken () ; 
  77.     } 
  78.     vacuous = true ; 
  79.     curval = 0 ; 
  80.     while ( true ) {
  81.     
  82.       if ( ( curtok < 3120 + radix ) && ( curtok >= 3120 ) && ( curtok <= 3129 
  83.       ) ) 
  84.       d = curtok - 3120 ; 
  85.       else if ( radix == 16 ) 
  86.       if ( ( curtok <= 2886 ) && ( curtok >= 2881 ) ) 
  87.       d = curtok - 2871 ; 
  88.       else if ( ( curtok <= 3142 ) && ( curtok >= 3137 ) ) 
  89.       d = curtok - 3127 ; 
  90.       else goto lab30 ; 
  91.       else goto lab30 ; 
  92.       vacuous = false ; 
  93.       if ( ( curval >= m ) && ( ( curval > m ) || ( d > 7 ) || ( radix != 10 ) 
  94.       ) ) 
  95.       {
  96.     if ( OKsofar ) 
  97.     {
  98.       {
  99.         if ( interaction == 3 ) 
  100.         wakeupterminal () ; 
  101.         printnl ( 133 ) ; 
  102.         print ( 558 ) ; 
  103.       } 
  104.       {
  105.         helpptr = 2 ; 
  106.         helpline [ 1 ] = 559 ; 
  107.         helpline [ 0 ] = 560 ; 
  108.       } 
  109.       error () ; 
  110.       curval = 2147483647L ; 
  111.       OKsofar = false ; 
  112.     } 
  113.       } 
  114.       else curval = curval * radix + d ; 
  115.       getxtoken () ; 
  116.     } 
  117.     lab30: ; 
  118.     if ( vacuous ) 
  119.     {
  120.       {
  121.     if ( interaction == 3 ) 
  122.     wakeupterminal () ; 
  123.     printnl ( 133 ) ; 
  124.     print ( 522 ) ; 
  125.       } 
  126.       {
  127.     helpptr = 3 ; 
  128.     helpline [ 2 ] = 523 ; 
  129.     helpline [ 1 ] = 524 ; 
  130.     helpline [ 0 ] = 525 ; 
  131.       } 
  132.       backerror () ; 
  133.     } 
  134.     else if ( curcmd != 10 ) 
  135.     backinput () ; 
  136.   } 
  137.   if ( negative ) 
  138.   curval = - (integer) curval ; 
  139. zscandimen ( mu , inf , shortcut ) 
  140. boolean mu , inf , shortcut ; 
  141. {/* 30 31 32 40 45 88 89 */ scandimen_regmem 
  142.   boolean negative  ; 
  143.   integer f  ; 
  144.   integer num, denom  ; 
  145.   smallnumber k  ; 
  146.   scaled v  ; 
  147.   integer savecurval  ; 
  148.   f = 0 ; 
  149.   aritherror = false ; 
  150.   curorder = 0 ; 
  151.   negative = false ; 
  152.   if ( ! shortcut ) 
  153.   {
  154.     negative = false ; 
  155.     do {
  156.     do { getxtoken () ; 
  157.       } while ( ! ( curcmd != 10 ) ) ; 
  158.       if ( curtok == 3117 ) 
  159.       {
  160.     negative = ! negative ; 
  161.     curtok = 3115 ; 
  162.       } 
  163.     } while ( ! ( curtok != 3115 ) ) ; 
  164.     if ( ( curcmd >= 67 ) && ( curcmd <= 88 ) ) 
  165.     if ( mu ) 
  166.     {
  167.       scansomethinginterna ( 3 , false ) ; 
  168.       if ( curvallevel >= 2 ) 
  169.       {
  170.     v = mem [ curval + 1 ] .cint ; 
  171.     deleteglueref ( curval ) ; 
  172.     curval = v ; 
  173.       } 
  174.       if ( curvallevel == 3 ) 
  175.       goto lab89 ; 
  176.       if ( curvallevel != 0 ) 
  177.       muerror () ; 
  178.     } 
  179.     else {
  180.     
  181.       scansomethinginterna ( 1 , false ) ; 
  182.       if ( curvallevel == 1 ) 
  183.       goto lab89 ; 
  184.     } 
  185.     else {
  186.     
  187.       backinput () ; 
  188.       if ( curtok == 3116 ) 
  189.       curtok = 3118 ; 
  190.       if ( curtok != 3118 ) 
  191.       scanint () ; 
  192.       else {
  193.       
  194.     radix = 10 ; 
  195.     curval = 0 ; 
  196.       } 
  197.       if ( curtok == 3116 ) 
  198.       curtok = 3118 ; 
  199.       if ( ( radix == 10 ) && ( curtok == 3118 ) ) 
  200.       {
  201.     k = 0 ; 
  202.     gettoken () ; 
  203.     while ( true ) {
  204.         
  205.       getxtoken () ; 
  206.       if ( ( curtok > 3129 ) || ( curtok < 3120 ) ) 
  207.       goto lab31 ; 
  208.       if ( k < 17 ) 
  209.       {
  210.         dig [ k ] = curtok - 3120 ; 
  211.         incr ( k ) ; 
  212.       } 
  213.     } 
  214.     lab31: f = rounddecimals ( k ) ; 
  215.     if ( curcmd != 10 ) 
  216.     backinput () ; 
  217.       } 
  218.     } 
  219.   } 
  220.   if ( curval < 0 ) 
  221.   {
  222.     negative = ! negative ; 
  223.     curval = - (integer) curval ; 
  224.   } 
  225.   if ( inf ) 
  226.   if ( scankeyword ( 180 ) ) 
  227.   {
  228.     curorder = 1 ; 
  229.     while ( scankeyword ( 108 ) ) {
  230.     
  231.       if ( curorder == 3 ) 
  232.       {
  233.     {
  234.       if ( interaction == 3 ) 
  235.       wakeupterminal () ; 
  236.       printnl ( 133 ) ; 
  237.       print ( 562 ) ; 
  238.     } 
  239.     print ( 563 ) ; 
  240.     {
  241.       helpptr = 1 ; 
  242.       helpline [ 0 ] = 564 ; 
  243.     } 
  244.     error () ; 
  245.       } 
  246.       else incr ( curorder ) ; 
  247.     } 
  248.     goto lab88 ; 
  249.   } 
  250.   savecurval = curval ; 
  251.   do {
  252.       getxtoken () ; 
  253.   } while ( ! ( curcmd != 10 ) ) ; 
  254.   if ( ( curcmd < 67 ) || ( curcmd > 88 ) ) 
  255.   backinput () ; 
  256.   else {
  257.       
  258.     if ( mu ) 
  259.     {
  260.       scansomethinginterna ( 3 , false ) ; 
  261.       if ( curvallevel >= 2 ) 
  262.       {
  263.     v = mem [ curval + 1 ] .cint ; 
  264.     deleteglueref ( curval ) ; 
  265.     curval = v ; 
  266.       } 
  267.       if ( curvallevel != 3 ) 
  268.       muerror () ; 
  269.     } 
  270.     else scansomethinginterna ( 1 , false ) ; 
  271.     v = curval ; 
  272.     goto lab40 ; 
  273.   } 
  274.   if ( mu ) 
  275.   goto lab45 ; 
  276.   if ( scankeyword ( 565 ) ) 
  277.   v = ( fontinfo [ 6 + parambase [ eqtb [ 4578 ] .hh .v.RH ] ] .cint ) ; 
  278.   else if ( scankeyword ( 566 ) ) 
  279.   v = ( fontinfo [ 5 + parambase [ eqtb [ 4578 ] .hh .v.RH ] ] .cint ) ; 
  280.   else goto lab45 ; 
  281.   {
  282.     getxtoken () ; 
  283.     if ( curcmd != 10 ) 
  284.     backinput () ; 
  285.   } 
  286.   lab40: curval = nxplusy ( savecurval , v , xnoverd ( v , f , 65536L ) ) ; 
  287.   goto lab89 ; 
  288.   lab45: ; 
  289.   if ( mu ) 
  290.   if ( scankeyword ( 205 ) ) 
  291.   goto lab88 ; 
  292.   else {
  293.       
  294.     {
  295.       if ( interaction == 3 ) 
  296.       wakeupterminal () ; 
  297.       printnl ( 133 ) ; 
  298.       print ( 562 ) ; 
  299.     } 
  300.     print ( 567 ) ; 
  301.     {
  302.       helpptr = 4 ; 
  303.       helpline [ 3 ] = 568 ; 
  304.       helpline [ 2 ] = 569 ; 
  305.       helpline [ 1 ] = 570 ; 
  306.       helpline [ 0 ] = 571 ; 
  307.     } 
  308.     error () ; 
  309.     goto lab88 ; 
  310.   } 
  311.   if ( scankeyword ( 561 ) ) 
  312.   {
  313.     preparemag () ; 
  314.     if ( eqtb [ 5284 ] .cint != 1000 ) 
  315.     {
  316.       curval = xnoverd ( curval , 1000 , eqtb [ 5284 ] .cint ) ; 
  317.       f = ( 1000 * f + 65536L * remainder ) / eqtb [ 5284 ] .cint ; 
  318.       curval = curval + ( f / 65536L ) ; 
  319.       f = f % 65536L ; 
  320.     } 
  321.   } 
  322.   if ( scankeyword ( 262 ) ) 
  323.   goto lab88 ; 
  324.   if ( scankeyword ( 572 ) ) 
  325.   {
  326.     num = 7227 ; 
  327.     denom = 100 ; 
  328.   } 
  329.   else if ( scankeyword ( 573 ) ) 
  330.   {
  331.     num = 12 ; 
  332.     denom = 1 ; 
  333.   } 
  334.   else if ( scankeyword ( 574 ) ) 
  335.   {
  336.     num = 7227 ; 
  337.     denom = 254 ; 
  338.   } 
  339.   else if ( scankeyword ( 575 ) ) 
  340.   {
  341.     num = 7227 ; 
  342.     denom = 2540 ; 
  343.   } 
  344.   else if ( scankeyword ( 576 ) ) 
  345.   {
  346.     num = 7227 ; 
  347.     denom = 7200 ; 
  348.   } 
  349.   else if ( scankeyword ( 577 ) ) 
  350.   {
  351.     num = 1238 ; 
  352.     denom = 1157 ; 
  353.   } 
  354.   else if ( scankeyword ( 578 ) ) 
  355.   {
  356.     num = 14856 ; 
  357.     denom = 1157 ; 
  358.   } 
  359.   else if ( scankeyword ( 579 ) ) 
  360.   goto lab30 ; 
  361.   else {
  362.       
  363.     {
  364.       if ( interaction == 3 ) 
  365.       wakeupterminal () ; 
  366.       printnl ( 133 ) ; 
  367.       print ( 562 ) ; 
  368.     } 
  369.     print ( 580 ) ; 
  370.     {
  371.       helpptr = 6 ; 
  372.       helpline [ 5 ] = 581 ; 
  373.       helpline [ 4 ] = 582 ; 
  374.       helpline [ 3 ] = 583 ; 
  375.       helpline [ 2 ] = 569 ; 
  376.       helpline [ 1 ] = 570 ; 
  377.       helpline [ 0 ] = 571 ; 
  378.     } 
  379.     error () ; 
  380.     goto lab32 ; 
  381.   } 
  382.   curval = xnoverd ( curval , num , denom ) ; 
  383.   f = ( num * f + 65536L * remainder ) / denom ; 
  384.   curval = curval + ( f / 65536L ) ; 
  385.   f = f % 65536L ; 
  386.   lab32: ; 
  387.   lab88: if ( curval >= 16384 ) 
  388.   aritherror = true ; 
  389.   else curval = curval * 65536L + f ; 
  390.   lab30: ; 
  391.   {
  392.     getxtoken () ; 
  393.     if ( curcmd != 10 ) 
  394.     backinput () ; 
  395.   } 
  396.   lab89: if ( aritherror || ( abs ( curval ) >= 1073741824L ) ) 
  397.   {
  398.     {
  399.       if ( interaction == 3 ) 
  400.       wakeupterminal () ; 
  401.       printnl ( 133 ) ; 
  402.       print ( 584 ) ; 
  403.     } 
  404.     {
  405.       helpptr = 2 ; 
  406.       helpline [ 1 ] = 585 ; 
  407.       helpline [ 0 ] = 586 ; 
  408.     } 
  409.     error () ; 
  410.     curval = 1073741823L ; 
  411.     aritherror = false ; 
  412.   } 
  413.   if ( negative ) 
  414.   curval = - (integer) curval ; 
  415. zscanglue ( level ) 
  416. smallnumber level ; 
  417. {/* 10 */ scanglue_regmem 
  418.   boolean negative  ; 
  419.   halfword q  ; 
  420.   boolean mu  ; 
  421.   mu = ( level == 3 ) ; 
  422.   negative = false ; 
  423.   do {
  424.       do { getxtoken () ; 
  425.     } while ( ! ( curcmd != 10 ) ) ; 
  426.     if ( curtok == 3117 ) 
  427.     {
  428.       negative = ! negative ; 
  429.       curtok = 3115 ; 
  430.     } 
  431.   } while ( ! ( curtok != 3115 ) ) ; 
  432.   if ( ( curcmd >= 67 ) && ( curcmd <= 88 ) ) 
  433.   {
  434.     scansomethinginterna ( level , negative ) ; 
  435.     if ( curvallevel >= 2 ) 
  436.     {
  437.       if ( curvallevel != level ) 
  438.       muerror () ; 
  439.       return ; 
  440.     } 
  441.     if ( curvallevel == 0 ) 
  442.     scandimen ( mu , false , true ) ; 
  443.     else if ( level == 3 ) 
  444.     muerror () ; 
  445.   } 
  446.   else {
  447.       
  448.     backinput () ; 
  449.     scandimen ( mu , false , false ) ; 
  450.     if ( negative ) 
  451.     curval = - (integer) curval ; 
  452.   } 
  453.   q = newspec ( 0 ) ; 
  454.   mem [ q + 1 ] .cint = curval ; 
  455.   if ( scankeyword ( 587 ) ) 
  456.   {
  457.     scandimen ( mu , true , false ) ; 
  458.     mem [ q + 2 ] .cint = curval ; 
  459.     mem [ q ] .hh.b0 = curorder ; 
  460.   } 
  461.   if ( scankeyword ( 588 ) ) 
  462.   {
  463.     scandimen ( mu , true , false ) ; 
  464.     mem [ q + 3 ] .cint = curval ; 
  465.     mem [ q ] .hh.b1 = curorder ; 
  466.   } 
  467.   curval = q ; 
  468. halfword scanrulespec () {
  469.     /* 21 */ register halfword Result; 
  470.   scanrulespec_regmem 
  471.   halfword q  ; 
  472.   q = newrule () ; 
  473.   if ( curcmd == 35 ) 
  474.   mem [ q + 1 ] .cint = 26214 ; 
  475.   else {
  476.       
  477.     mem [ q + 3 ] .cint = 26214 ; 
  478.     mem [ q + 2 ] .cint = 0 ; 
  479.   } 
  480.   lab21: if ( scankeyword ( 589 ) ) 
  481.   {
  482.     scandimen ( false , false , false ) ; 
  483.     mem [ q + 1 ] .cint = curval ; 
  484.     goto lab21 ; 
  485.   } 
  486.   if ( scankeyword ( 590 ) ) 
  487.   {
  488.     scandimen ( false , false , false ) ; 
  489.     mem [ q + 3 ] .cint = curval ; 
  490.     goto lab21 ; 
  491.   } 
  492.   if ( scankeyword ( 591 ) ) 
  493.   {
  494.     scandimen ( false , false , false ) ; 
  495.     mem [ q + 2 ] .cint = curval ; 
  496.     goto lab21 ; 
  497.   } 
  498.   Result = q ; 
  499.   return(Result) ; 
  500. halfword strtoks () {
  501.     register halfword Result; strtoks_regmem 
  502.   halfword p  ; 
  503.   halfword q  ; 
  504.   halfword t  ; 
  505.   poolpointer k  ; 
  506.   {
  507.     if ( poolptr + 1 > poolsize ) 
  508.     overflow ( 128 , poolsize - initpoolptr ) ; 
  509.   } 
  510.   p = memtop - 3 ; 
  511.   mem [ p ] .hh .v.RH = 0 ; 
  512.   k = strstart [ strptr ] ; 
  513.   while ( k < poolptr ) {
  514.       
  515.     t = strpool [ k ] ; 
  516.     if ( t == 32 ) 
  517.     t = 2592 ; 
  518.     else t = 3072 + t ; 
  519.     {
  520.       {
  521.     q = avail ; 
  522.     if ( q == 0 ) 
  523.     q = getavail () ; 
  524.     else {
  525.         
  526.       avail = mem [ q ] .hh .v.RH ; 
  527.       mem [ q ] .hh .v.RH = 0 ; 
  528.     ;
  529. #ifdef STAT
  530.       incr ( dynused ) ; 
  531. #endif /* STAT */
  532.     } 
  533.       } 
  534.       mem [ p ] .hh .v.RH = q ; 
  535.       mem [ q ] .hh .v.LH = t ; 
  536.       p = q ; 
  537.     } 
  538.     incr ( k ) ; 
  539.   } 
  540.   poolptr = strstart [ strptr ] ; 
  541.   Result = p ; 
  542.   return(Result) ; 
  543. halfword thetoks () {
  544.     register halfword Result; thetoks_regmem 
  545.   schar oldsetting  ; 
  546.   halfword p, q, r  ; 
  547.   getxtoken () ; 
  548.   scansomethinginterna ( 5 , false ) ; 
  549.   if ( curvallevel >= 4 ) 
  550.   {
  551.     p = memtop - 3 ; 
  552.     mem [ p ] .hh .v.RH = 0 ; 
  553.     if ( curvallevel == 4 ) 
  554.     {
  555.       q = getavail () ; 
  556.       mem [ p ] .hh .v.RH = q ; 
  557.       mem [ q ] .hh .v.LH = 4096 + curval ; 
  558.       p = q ; 
  559.     } 
  560.     else if ( curval != 0 ) 
  561.     {
  562.       r = mem [ curval ] .hh .v.RH ; 
  563.       while ( r != 0 ) {
  564.       
  565.     {
  566.       {
  567.         q = avail ; 
  568.         if ( q == 0 ) 
  569.         q = getavail () ; 
  570.         else {
  571.         
  572.           avail = mem [ q ] .hh .v.RH ; 
  573.           mem [ q ] .hh .v.RH = 0 ; 
  574.     ;
  575. #ifdef STAT
  576.           incr ( dynused ) ; 
  577. #endif /* STAT */
  578.         } 
  579.       } 
  580.       mem [ p ] .hh .v.RH = q ; 
  581.       mem [ q ] .hh .v.LH = mem [ r ] .hh .v.LH ; 
  582.       p = q ; 
  583.     } 
  584.     r = mem [ r ] .hh .v.RH ; 
  585.       } 
  586.     } 
  587.     Result = p ; 
  588.   } 
  589.   else {
  590.       
  591.     oldsetting = selector ; 
  592.     selector = 21 ; 
  593.     switch ( curvallevel ) 
  594.     {case 0 : 
  595.       printint ( curval ) ; 
  596.       break ; 
  597.     case 1 : 
  598.       {
  599.     printscaled ( curval ) ; 
  600.     print ( 262 ) ; 
  601.       } 
  602.       break ; 
  603.     case 2 : 
  604.       {
  605.     printspec ( curval , 262 ) ; 
  606.     deleteglueref ( curval ) ; 
  607.       } 
  608.       break ; 
  609.     case 3 : 
  610.       {
  611.     printspec ( curval , 205 ) ; 
  612.     deleteglueref ( curval ) ; 
  613.       } 
  614.       break ; 
  615.     } 
  616.     selector = oldsetting ; 
  617.     Result = strtoks () ; 
  618.   } 
  619.   return(Result) ; 
  620. insthetoks () {
  621.     insthetoks_regmem 
  622.   mem [ memtop - 12 ] .hh .v.RH = thetoks () ; 
  623.   begintokenlist ( mem [ memtop - 3 ] .hh .v.RH , 4 ) ; 
  624. convtoks () {
  625.     convtoks_regmem 
  626.   schar oldsetting  ; 
  627.   schar c  ; 
  628.   smallnumber savescannerstatus  ; 
  629.   c = curchr ; 
  630.   switch ( c ) 
  631.   {case 0 : 
  632.   case 1 : 
  633.     scanint () ; 
  634.     break ; 
  635.   case 2 : 
  636.   case 3 : 
  637.     {
  638.       savescannerstatus = scannerstatus ; 
  639.       scannerstatus = 0 ; 
  640.       gettoken () ; 
  641.       scannerstatus = savescannerstatus ; 
  642.     } 
  643.     break ; 
  644.   case 4 : 
  645.     scanfontident () ; 
  646.     break ; 
  647.   case 5 : 
  648.     if ( jobname == 0 ) 
  649.     openlogfile () ; 
  650.     break ; 
  651.   } 
  652.   oldsetting = selector ; 
  653.   selector = 21 ; 
  654.   switch ( c ) 
  655.   {case 0 : 
  656.     printint ( curval ) ; 
  657.     break ; 
  658.   case 1 : 
  659.     printromanint ( curval ) ; 
  660.     break ; 
  661.   case 2 : 
  662.     if ( curcs != 0 ) 
  663.     sprintcs ( curcs ) ; 
  664.     else printchar ( curchr ) ; 
  665.     break ; 
  666.   case 3 : 
  667.     printmeaning () ; 
  668.     break ; 
  669.   case 4 : 
  670.     {
  671.       print ( fontname [ curval ] ) ; 
  672.       if ( fontsize [ curval ] != fontdsize [ curval ] ) 
  673.       {
  674.     print ( 598 ) ; 
  675.     printscaled ( fontsize [ curval ] ) ; 
  676.     print ( 262 ) ; 
  677.       } 
  678.     } 
  679.     break ; 
  680.   case 5 : 
  681.     print ( jobname ) ; 
  682.     break ; 
  683.   } 
  684.   selector = oldsetting ; 
  685.   mem [ memtop - 12 ] .hh .v.RH = strtoks () ; 
  686.   begintokenlist ( mem [ memtop - 3 ] .hh .v.RH , 4 ) ; 
  687. halfword zscantoks ( macrodef , xpand ) 
  688. boolean macrodef , xpand ; 
  689. {/* 40 30 31 32 */ register halfword Result; scantoks_regmem 
  690.   halfword t  ; 
  691.   halfword s  ; 
  692.   halfword p  ; 
  693.   halfword q  ; 
  694.   halfword unbalance  ; 
  695.   halfword hashbrace  ; 
  696.   if ( macrodef ) 
  697.   scannerstatus = 2 ; 
  698.   else scannerstatus = 5 ; 
  699.   warningindex = curcs ; 
  700.   defref = getavail () ; 
  701.   mem [ defref ] .hh .v.LH = 0 ; 
  702.   p = defref ; 
  703.   hashbrace = 0 ; 
  704.   t = 3120 ; 
  705.   if ( macrodef ) 
  706.   {
  707.     while ( true ) {
  708.     
  709.       gettoken () ; 
  710.       if ( curtok < 768 ) 
  711.       goto lab31 ; 
  712.       if ( curcmd == 6 ) 
  713.       {
  714.     s = 3328 + curchr ; 
  715.     gettoken () ; 
  716.     if ( curcmd == 1 ) 
  717.     {
  718.       hashbrace = curtok ; 
  719.       {
  720.         q = getavail () ; 
  721.         mem [ p ] .hh .v.RH = q ; 
  722.         mem [ q ] .hh .v.LH = curtok ; 
  723.         p = q ; 
  724.       } 
  725.       {
  726.         q = getavail () ; 
  727.         mem [ p ] .hh .v.RH = q ; 
  728.         mem [ q ] .hh .v.LH = 3584 ; 
  729.         p = q ; 
  730.       } 
  731.       goto lab30 ; 
  732.     } 
  733.     if ( t == 3129 ) 
  734.     {
  735.       {
  736.         if ( interaction == 3 ) 
  737.         wakeupterminal () ; 
  738.         printnl ( 133 ) ; 
  739.         print ( 601 ) ; 
  740.       } 
  741.       {
  742.         helpptr = 1 ; 
  743.         helpline [ 0 ] = 602 ; 
  744.       } 
  745.       error () ; 
  746.     } 
  747.     else {
  748.         
  749.       incr ( t ) ; 
  750.       if ( curtok != t ) 
  751.       {
  752.         {
  753.           if ( interaction == 3 ) 
  754.           wakeupterminal () ; 
  755.           printnl ( 133 ) ; 
  756.           print ( 603 ) ; 
  757.         } 
  758.         {
  759.           helpptr = 2 ; 
  760.           helpline [ 1 ] = 604 ; 
  761.           helpline [ 0 ] = 605 ; 
  762.         } 
  763.         backerror () ; 
  764.       } 
  765.       curtok = s ; 
  766.     } 
  767.       } 
  768.       {
  769.     q = getavail () ; 
  770.     mem [ p ] .hh .v.RH = q ; 
  771.     mem [ q ] .hh .v.LH = curtok ; 
  772.     p = q ; 
  773.       } 
  774.     } 
  775.     lab31: {
  776.     
  777.       q = getavail () ; 
  778.       mem [ p ] .hh .v.RH = q ; 
  779.       mem [ q ] .hh .v.LH = 3584 ; 
  780.       p = q ; 
  781.     } 
  782.     if ( curcmd == 2 ) 
  783.     {
  784.       {
  785.     if ( interaction == 3 ) 
  786.     wakeupterminal () ; 
  787.     printnl ( 133 ) ; 
  788.     print ( 515 ) ; 
  789.       } 
  790.       incr ( alignstate ) ; 
  791.       {
  792.     helpptr = 2 ; 
  793.     helpline [ 1 ] = 599 ; 
  794.     helpline [ 0 ] = 600 ; 
  795.       } 
  796.       error () ; 
  797.       goto lab40 ; 
  798.     } 
  799.     lab30: ; 
  800.   } 
  801.   else scanleftbrace () ; 
  802.   unbalance = 1 ; 
  803.   while ( true ) {
  804.       
  805.     if ( xpand ) 
  806.     {
  807.       while ( true ) {
  808.       
  809.     getnext () ; 
  810.     if ( curcmd <= 99 ) 
  811.     goto lab32 ; 
  812.     if ( curcmd != 108 ) 
  813.     expand () ; 
  814.     else {
  815.         
  816.       q = thetoks () ; 
  817.       if ( mem [ memtop - 3 ] .hh .v.RH != 0 ) 
  818.       {
  819.         mem [ p ] .hh .v.RH = mem [ memtop - 3 ] .hh .v.RH ; 
  820.         p = q ; 
  821.       } 
  822.     } 
  823.       } 
  824.       lab32: xtoken () ; 
  825.     } 
  826.     else gettoken () ; 
  827.     if ( curtok < 768 ) 
  828.     if ( curcmd < 2 ) 
  829.     incr ( unbalance ) ; 
  830.     else {
  831.     
  832.       decr ( unbalance ) ; 
  833.       if ( unbalance == 0 ) 
  834.       goto lab40 ; 
  835.     } 
  836.     else if ( curcmd == 6 ) 
  837.     if ( macrodef ) 
  838.     {
  839.       s = curtok ; 
  840.       if ( xpand ) 
  841.       getxtoken () ; 
  842.       else gettoken () ; 
  843.       if ( curcmd != 6 ) 
  844.       if ( ( curtok <= 3120 ) || ( curtok > t ) ) 
  845.       {
  846.     {
  847.       if ( interaction == 3 ) 
  848.       wakeupterminal () ; 
  849.       printnl ( 133 ) ; 
  850.       print ( 606 ) ; 
  851.     } 
  852.     sprintcs ( warningindex ) ; 
  853.     {
  854.       helpptr = 3 ; 
  855.       helpline [ 2 ] = 607 ; 
  856.       helpline [ 1 ] = 608 ; 
  857.       helpline [ 0 ] = 609 ; 
  858.     } 
  859.     backerror () ; 
  860.     curtok = s ; 
  861.       } 
  862.       else curtok = 1232 + curchr ; 
  863.     } 
  864.     {
  865.       q = getavail () ; 
  866.       mem [ p ] .hh .v.RH = q ; 
  867.       mem [ q ] .hh .v.LH = curtok ; 
  868.       p = q ; 
  869.     } 
  870.   } 
  871.   lab40: scannerstatus = 0 ; 
  872.   if ( hashbrace != 0 ) 
  873.   {
  874.     q = getavail () ; 
  875.     mem [ p ] .hh .v.RH = q ; 
  876.     mem [ q ] .hh .v.LH = hashbrace ; 
  877.     p = q ; 
  878.   } 
  879.   Result = p ; 
  880.   return(Result) ; 
  881. zreadtoks ( n , r ) 
  882. integer n ; 
  883. halfword r ; 
  884. {/* 30 */ readtoks_regmem 
  885.   halfword p  ; 
  886.   halfword q  ; 
  887.   integer s  ; 
  888.   smallnumber m  ; 
  889.   scannerstatus = 2 ; 
  890.   warningindex = r ; 
  891.   defref = getavail () ; 
  892.   mem [ defref ] .hh .v.LH = 0 ; 
  893.   p = defref ; 
  894.   {
  895.     q = getavail () ; 
  896.     mem [ p ] .hh .v.RH = q ; 
  897.     mem [ q ] .hh .v.LH = 3584 ; 
  898.     p = q ; 
  899.   } 
  900.   if ( ( n < 0 ) || ( n > 15 ) ) 
  901.   m = 16 ; 
  902.   else m = n ; 
  903.   s = alignstate ; 
  904.   alignstate = 1000000L ; 
  905.   do {
  906.       beginfilereading () ; 
  907.     curinput .namefield = m + 1 ; 
  908.     if ( readopen [ m ] == 2 ) 
  909.     if ( interaction > 1 ) 
  910.     if ( n < 0 ) 
  911.     {
  912.       wakeupterminal () ; 
  913.       print ( 206 ) ; 
  914.       terminput () ; 
  915.     } 
  916.     else {
  917.     
  918.       wakeupterminal () ; 
  919.       println () ; 
  920.       sprintcs ( r ) ; 
  921.       {
  922.     wakeupterminal () ; 
  923.     print ( 61 ) ; 
  924.     terminput () ; 
  925.       } 
  926.       n = -1 ; 
  927.     } 
  928.     else fatalerror ( 610 ) ; 
  929.     else if ( readopen [ m ] == 1 ) 
  930.     if ( inputln ( readfile [ m ] , false ) ) 
  931.     readopen [ m ] = 0 ; 
  932.     else {
  933.     
  934.       aclose ( readfile [ m ] ) ; 
  935.       readopen [ m ] = 2 ; 
  936.     } 
  937.     else {
  938.     
  939.       if ( ! inputln ( readfile [ m ] , true ) ) 
  940.       {
  941.     aclose ( readfile [ m ] ) ; 
  942.     readopen [ m ] = 2 ; 
  943.     if ( alignstate != 1000000L ) 
  944.     {
  945.       runaway () ; 
  946.       {
  947.         if ( interaction == 3 ) 
  948.         wakeupterminal () ; 
  949.         printnl ( 133 ) ; 
  950.         print ( 611 ) ; 
  951.       } 
  952.       printesc ( 392 ) ; 
  953.       {
  954.         helpptr = 1 ; 
  955.         helpline [ 0 ] = 612 ; 
  956.       } 
  957.       alignstate = 1000000L ; 
  958.       error () ; 
  959.     } 
  960.       } 
  961.     } 
  962.     curinput .limitfield = last ; 
  963.     if ( ( eqtb [ 5315 ] .cint < 0 ) || ( eqtb [ 5315 ] .cint > 127 ) ) 
  964.     decr ( curinput .limitfield ) ; 
  965.     else buffer [ curinput .limitfield ] = eqtb [ 5315 ] .cint ; 
  966.     first = curinput .limitfield + 1 ; 
  967.     curinput .locfield = curinput .startfield ; 
  968.     curinput .statefield = 33 ; 
  969.     while ( true ) {
  970.     
  971.       gettoken () ; 
  972.       if ( curtok == 0 ) 
  973.       goto lab30 ; 
  974.       {
  975.     q = getavail () ; 
  976.     mem [ p ] .hh .v.RH = q ; 
  977.     mem [ q ] .hh .v.LH = curtok ; 
  978.     p = q ; 
  979.       } 
  980.     } 
  981.     lab30: endfilereading () ; 
  982.   } while ( ! ( alignstate == 1000000L ) ) ; 
  983.   curval = defref ; 
  984.   scannerstatus = 0 ; 
  985.   alignstate = s ; 
  986. passtext () {
  987.     /* 30 */ passtext_regmem 
  988.   integer l  ; 
  989.   smallnumber savescannerstatus  ; 
  990.   savescannerstatus = scannerstatus ; 
  991.   scannerstatus = 1 ; 
  992.   l = 0 ; 
  993.   skipline = line ; 
  994.   while ( true ) {
  995.       
  996.     getnext () ; 
  997.     if ( curcmd == 105 ) 
  998.     {
  999.       if ( l == 0 ) 
  1000.       goto lab30 ; 
  1001.       if ( curchr == 2 ) 
  1002.       decr ( l ) ; 
  1003.     } 
  1004.     else if ( curcmd == 104 ) 
  1005.     incr ( l ) ; 
  1006.   } 
  1007.   lab30: scannerstatus = savescannerstatus ; 
  1008. zchangeiflimit ( l , p ) 
  1009. smallnumber l ; 
  1010. halfword p ; 
  1011. {/* 10 */ changeiflimit_regmem 
  1012.   halfword q  ; 
  1013.   if ( p == condptr ) 
  1014.   iflimit = l ; 
  1015.   else {
  1016.       
  1017.     q = condptr ; 
  1018.     while ( true ) {
  1019.     
  1020.       if ( q == 0 ) 
  1021.       confusion ( 613 ) ; 
  1022.       if ( mem [ q ] .hh .v.RH == p ) 
  1023.       {
  1024.     mem [ q ] .hh.b0 = l ; 
  1025.     return ; 
  1026.       } 
  1027.       q = mem [ q ] .hh .v.RH ; 
  1028.     } 
  1029.   } 
  1030. conditional () {
  1031.     /* 10 50 */ conditional_regmem 
  1032.   boolean b  ; 
  1033.   schar r  ; 
  1034.   integer m, n  ; 
  1035.   halfword p, q  ; 
  1036.   smallnumber savescannerstatus  ; 
  1037.   halfword savecondptr  ; 
  1038.   smallnumber thisif  ; 
  1039.   {
  1040.     p = getnode ( 2 ) ; 
  1041.     mem [ p ] .hh .v.RH = condptr ; 
  1042.     mem [ p ] .hh.b0 = iflimit ; 
  1043.     mem [ p ] .hh.b1 = curif ; 
  1044.     mem [ p + 1 ] .cint = ifline ; 
  1045.     condptr = p ; 
  1046.     curif = curchr ; 
  1047.     iflimit = 1 ; 
  1048.     ifline = line ; 
  1049.   } 
  1050.   savecondptr = condptr ; 
  1051.   thisif = curchr ; 
  1052.   switch ( thisif ) 
  1053.   {case 0 : 
  1054.   case 1 : 
  1055.     {
  1056.       {
  1057.     getxtoken () ; 
  1058.     if ( curcmd == 0 ) 
  1059.     if ( curchr == 257 ) 
  1060.     {
  1061.       curcmd = 13 ; 
  1062.       curchr = curtok - 4097 ; 
  1063.     } 
  1064.       } 
  1065.       if ( ( curcmd > 13 ) || ( curchr > 127 ) ) 
  1066.       {
  1067.     m = 0 ; 
  1068.     n = 256 ; 
  1069.       } 
  1070.       else {
  1071.       
  1072.     m = curcmd ; 
  1073.     n = curchr ; 
  1074.       } 
  1075.       {
  1076.     getxtoken () ; 
  1077.     if ( curcmd == 0 ) 
  1078.     if ( curchr == 257 ) 
  1079.     {
  1080.       curcmd = 13 ; 
  1081.       curchr = curtok - 4097 ; 
  1082.     } 
  1083.       } 
  1084.       if ( ( curcmd > 13 ) || ( curchr > 127 ) ) 
  1085.       {
  1086.     curcmd = 0 ; 
  1087.     curchr = 256 ; 
  1088.       } 
  1089.       if ( thisif == 0 ) 
  1090.       b = ( n == curchr ) ; 
  1091.       else b = ( m == curcmd ) ; 
  1092.     } 
  1093.     break ; 
  1094.   case 2 : 
  1095.   case 3 : 
  1096.     {
  1097.       if ( thisif == 2 ) 
  1098.       scanint () ; 
  1099.       else scandimen ( false , false , false ) ; 
  1100.       n = curval ; 
  1101.       do {
  1102.       getxtoken () ; 
  1103.       } while ( ! ( curcmd != 10 ) ) ; 
  1104.       if ( ( curtok >= 3132 ) && ( curtok <= 3134 ) ) 
  1105.       r = curtok - 3072 ; 
  1106.       else {
  1107.       
  1108.     {
  1109.       if ( interaction == 3 ) 
  1110.       wakeupterminal () ; 
  1111.       printnl ( 133 ) ; 
  1112.       print ( 637 ) ; 
  1113.     } 
  1114.     printcmdchr ( 104 , thisif ) ; 
  1115.     {
  1116.       helpptr = 1 ; 
  1117.       helpline [ 0 ] = 638 ; 
  1118.     } 
  1119.     backerror () ; 
  1120.     r = 61 ; 
  1121.       } 
  1122.       if ( thisif == 2 ) 
  1123.       scanint () ; 
  1124.       else scandimen ( false , false , false ) ; 
  1125.       switch ( r ) 
  1126.       {case 60 : 
  1127.     b = ( n < curval ) ; 
  1128.     break ; 
  1129.       case 61 : 
  1130.     b = ( n == curval ) ; 
  1131.     break ; 
  1132.       case 62 : 
  1133.     b = ( n > curval ) ; 
  1134.     break ; 
  1135.       } 
  1136.     } 
  1137.     break ; 
  1138.   case 4 : 
  1139.     {
  1140.       scanint () ; 
  1141.       b = odd ( curval ) ; 
  1142.     } 
  1143.     break ; 
  1144.   case 5 : 
  1145.     b = ( abs ( curlist .modefield ) == 1 ) ; 
  1146.     break ; 
  1147.   case 6 : 
  1148.     b = ( abs ( curlist .modefield ) == 101 ) ; 
  1149.     break ; 
  1150.   case 7 : 
  1151.     b = ( abs ( curlist .modefield ) == 201 ) ; 
  1152.     break ; 
  1153.   case 8 : 
  1154.     b = ( curlist .modefield < 0 ) ; 
  1155.     break ; 
  1156.   case 9 : 
  1157.   case 10 : 
  1158.   case 11 : 
  1159.     {
  1160.       scaneightbitint () ; 
  1161.       p = eqtb [ 4322 + curval ] .hh .v.RH ; 
  1162.       if ( thisif == 9 ) 
  1163.       b = ( p == 0 ) ; 
  1164.       else if ( p == 0 ) 
  1165.       b = false ; 
  1166.       else if ( thisif == 10 ) 
  1167.       b = ( mem [ p ] .hh.b0 == 0 ) ; 
  1168.       else b = ( mem [ p ] .hh.b0 == 1 ) ; 
  1169.     } 
  1170.     break ; 
  1171.   case 12 : 
  1172.     {
  1173.       savescannerstatus = scannerstatus ; 
  1174.       scannerstatus = 0 ; 
  1175.       getnext () ; 
  1176.       n = curcs ; 
  1177.       p = curcmd ; 
  1178.       q = curchr ; 
  1179.       getnext () ; 
  1180.       if ( curcmd != p ) 
  1181.       b = false ; 
  1182.       else if ( curcmd < 110 ) 
  1183.       b = ( curchr == q ) ; 
  1184.       else {
  1185.       
  1186.     p = mem [ curchr ] .hh .v.RH ; 
  1187.     q = mem [ eqtb [ n ] .hh .v.RH ] .hh .v.RH ; 
  1188.     while ( ( p != 0 ) && ( q != 0 ) ) if ( mem [ p ] .hh .v.LH != mem [ q 
  1189.     ] .hh .v.LH ) 
  1190.     p = 0 ; 
  1191.     else {
  1192.         
  1193.       p = mem [ p ] .hh .v.RH ; 
  1194.       q = mem [ q ] .hh .v.RH ; 
  1195.     } 
  1196.     b = ( ( p == 0 ) && ( q == 0 ) ) ; 
  1197.       } 
  1198.       scannerstatus = savescannerstatus ; 
  1199.     } 
  1200.     break ; 
  1201.   case 13 : 
  1202.     {
  1203.       scanfourbitint () ; 
  1204.       b = ( readopen [ curval ] == 2 ) ; 
  1205.     } 
  1206.     break ; 
  1207.   case 14 : 
  1208.     b = true ; 
  1209.     break ; 
  1210.   case 15 : 
  1211.     b = false ; 
  1212.     break ; 
  1213.   case 16 : 
  1214.     {
  1215.       scanint () ; 
  1216.       n = curval ; 
  1217.       if ( eqtb [ 5303 ] .cint > 1 ) 
  1218.       {
  1219.     begindiagnostic () ; 
  1220.     print ( 639 ) ; 
  1221.     printint ( n ) ; 
  1222.     printchar ( 125 ) ; 
  1223.     enddiagnostic ( false ) ; 
  1224.       } 
  1225.       while ( n != 0 ) {
  1226.       
  1227.     passtext () ; 
  1228.     if ( condptr == savecondptr ) 
  1229.     if ( curchr == 4 ) 
  1230.     decr ( n ) ; 
  1231.     else goto lab50 ; 
  1232.     else if ( curchr == 2 ) 
  1233.     {
  1234.       p = condptr ; 
  1235.       ifline = mem [ p + 1 ] .cint ; 
  1236.       curif = mem [ p ] .hh.b1 ; 
  1237.       iflimit = mem [ p ] .hh.b0 ; 
  1238.       condptr = mem [ p ] .hh .v.RH ; 
  1239.       freenode ( p , 2 ) ; 
  1240.     } 
  1241.       } 
  1242.       changeiflimit ( 4 , savecondptr ) ; 
  1243.       return ; 
  1244.     } 
  1245.     break ; 
  1246.   } 
  1247.   if ( eqtb [ 5303 ] .cint > 1 ) 
  1248.   {
  1249.     begindiagnostic () ; 
  1250.     if ( b ) 
  1251.     print ( 635 ) ; 
  1252.     else print ( 636 ) ; 
  1253.     enddiagnostic ( false ) ; 
  1254.   } 
  1255.   if ( b ) 
  1256.   {
  1257.     changeiflimit ( 3 , savecondptr ) ; 
  1258.     return ; 
  1259.   } 
  1260.   while ( true ) {
  1261.       
  1262.     passtext () ; 
  1263.     if ( condptr == savecondptr ) 
  1264.     {
  1265.       if ( curchr != 4 ) 
  1266.       goto lab50 ; 
  1267.       {
  1268.     if ( interaction == 3 ) 
  1269.     wakeupterminal () ; 
  1270.     printnl ( 133 ) ; 
  1271.     print ( 633 ) ; 
  1272.       } 
  1273.       printesc ( 631 ) ; 
  1274.       {
  1275.     helpptr = 1 ; 
  1276.     helpline [ 0 ] = 634 ; 
  1277.       } 
  1278.       error () ; 
  1279.     } 
  1280.     else if ( curchr == 2 ) 
  1281.     {
  1282.       p = condptr ; 
  1283.       ifline = mem [ p + 1 ] .cint ; 
  1284.       curif = mem [ p ] .hh.b1 ; 
  1285.       iflimit = mem [ p ] .hh.b0 ; 
  1286.       condptr = mem [ p ] .hh .v.RH ; 
  1287.       freenode ( p , 2 ) ; 
  1288.     } 
  1289.   } 
  1290.   lab50: if ( curchr == 2 ) 
  1291.   {
  1292.     p = condptr ; 
  1293.     ifline = mem [ p + 1 ] .cint ; 
  1294.     curif = mem [ p ] .hh.b1 ; 
  1295.     iflimit = mem [ p ] .hh.b0 ; 
  1296.     condptr = mem [ p ] .hh .v.RH ; 
  1297.     freenode ( p , 2 ) ; 
  1298.   } 
  1299.   else iflimit = 2 ; 
  1300. beginname () {
  1301.     beginname_regmem 
  1302.   areadelimiter = 0 ; 
  1303.   extdelimiter = 0 ; 
  1304. boolean zmorename ( c ) 
  1305. ASCIIcode c ; 
  1306. {register boolean Result; morename_regmem 
  1307.   if ( c == 32 ) 
  1308.   Result = false ; 
  1309.   else {
  1310.       
  1311.     if ( ( c == 47 ) ) 
  1312.     {
  1313.       areadelimiter = poolptr ; 
  1314.       extdelimiter = 0 ; 
  1315.     } 
  1316.     else if ( ( c == 46 ) && ( extdelimiter == 0 ) ) 
  1317.     extdelimiter = poolptr ; 
  1318.     {
  1319.       if ( poolptr + 1 > poolsize ) 
  1320.       overflow ( 128 , poolsize - initpoolptr ) ; 
  1321.     } 
  1322.     {
  1323.       strpool [ poolptr ] = c ; 
  1324.       incr ( poolptr ) ; 
  1325.     } 
  1326.     Result = true ; 
  1327.   } 
  1328.   return(Result) ; 
  1329. endname () {
  1330.     endname_regmem 
  1331.   if ( strptr + 3 > maxstrings ) 
  1332.   overflow ( 129 , maxstrings - initstrptr ) ; 
  1333.   if ( areadelimiter == 0 ) 
  1334.   curarea = 206 ; 
  1335.   else {
  1336.       
  1337.     curarea = strptr ; 
  1338.     incr ( strptr ) ; 
  1339.     strstart [ strptr ] = areadelimiter + 1 ; 
  1340.   } 
  1341.   if ( extdelimiter == 0 ) 
  1342.   {
  1343.     curext = 206 ; 
  1344.     curname = makestring () ; 
  1345.   } 
  1346.   else {
  1347.       
  1348.     curname = strptr ; 
  1349.     incr ( strptr ) ; 
  1350.     strstart [ strptr ] = extdelimiter ; 
  1351.     curext = makestring () ; 
  1352.   } 
  1353. zpackfilename ( n , a , e ) 
  1354. strnumber n , a , e ; 
  1355. {packfilename_regmem 
  1356.   integer k  ; 
  1357.   ASCIIcode c  ; 
  1358.   poolpointer j  ; 
  1359.   k = 0 ; 
  1360.   {register integer for_end; j = strstart [ a ] ; for_end = strstart [ a + 1 
  1361.   ] - 1 ; if ( j <= for_end) do 
  1362.     {
  1363.       c = strpool [ j ] ; 
  1364.       incr ( k ) ; 
  1365.       if ( k <= filenamesize ) 
  1366.       nameoffile [ k ] = xchr [ c ] ; 
  1367.     } 
  1368.   while ( j++ < for_end ) ; } 
  1369.   {register integer for_end; j = strstart [ n ] ; for_end = strstart [ n + 1 
  1370.   ] - 1 ; if ( j <= for_end) do 
  1371.     {
  1372.       c = strpool [ j ] ; 
  1373.       incr ( k ) ; 
  1374.       if ( k <= filenamesize ) 
  1375.       nameoffile [ k ] = xchr [ c ] ; 
  1376.     } 
  1377.   while ( j++ < for_end ) ; } 
  1378.   {register integer for_end; j = strstart [ e ] ; for_end = strstart [ e + 1 
  1379.   ] - 1 ; if ( j <= for_end) do 
  1380.     {
  1381.       c = strpool [ j ] ; 
  1382.       incr ( k ) ; 
  1383.       if ( k <= filenamesize ) 
  1384.       nameoffile [ k ] = xchr [ c ] ; 
  1385.     } 
  1386.   while ( j++ < for_end ) ; } 
  1387.   if ( k <= filenamesize ) 
  1388.   namelength = k ; 
  1389.   else namelength = filenamesize ; 
  1390.   {register integer for_end; k = namelength + 1 ; for_end = filenamesize 
  1391.   ; if ( k <= for_end) do 
  1392.     nameoffile [ k ] = ' ' ; 
  1393.   while ( k++ < for_end ) ; } 
  1394. zpackbufferedname ( n , a , b ) 
  1395. smallnumber n ; 
  1396. integer a , b ; 
  1397. {packbufferedname_regmem 
  1398.   integer k  ; 
  1399.   ASCIIcode c  ; 
  1400.   integer j  ; 
  1401.   if ( n + b - a + 5 > filenamesize ) 
  1402.   b = a + filenamesize - n - 5 ; 
  1403.   k = 0 ; 
  1404.   {register integer for_end; j = 1 ; for_end = n ; if ( j <= for_end) do 
  1405.     {
  1406.       c = xord [ TEXformatdefault [ j ] ] ; 
  1407.       incr ( k ) ; 
  1408.       if ( k <= filenamesize ) 
  1409.       nameoffile [ k ] = xchr [ c ] ; 
  1410.     } 
  1411.   while ( j++ < for_end ) ; } 
  1412.   {register integer for_end; j = a ; for_end = b ; if ( j <= for_end) do 
  1413.     {
  1414.       c = buffer [ j ] ; 
  1415.       incr ( k ) ; 
  1416.       if ( k <= filenamesize ) 
  1417.       nameoffile [ k ] = xchr [ c ] ; 
  1418.     } 
  1419.   while ( j++ < for_end ) ; } 
  1420.   {register integer for_end; j = 6 ; for_end = 9 ; if ( j <= for_end) do 
  1421.     {
  1422.       c = xord [ TEXformatdefault [ j ] ] ; 
  1423.       incr ( k ) ; 
  1424.       if ( k <= filenamesize ) 
  1425.       nameoffile [ k ] = xchr [ c ] ; 
  1426.     } 
  1427.   while ( j++ < for_end ) ; } 
  1428.   if ( k <= filenamesize ) 
  1429.   namelength = k ; 
  1430.   else namelength = filenamesize ; 
  1431.   {register integer for_end; k = namelength + 1 ; for_end = filenamesize 
  1432.   ; if ( k <= for_end) do 
  1433.     nameoffile [ k ] = ' ' ; 
  1434.   while ( k++ < for_end ) ; } 
  1435. strnumber makenamestring () {
  1436.     register strnumber Result; makenamestring_regmem 
  1437.   integer k, kstart  ; 
  1438.   k = 1 ; 
  1439.   while ( ( k < filenamesize ) && ( xord [ realnameoffile [ k ] ] != 32 ) ) 
  1440.   incr ( k ) ; 
  1441.   namelength = k - 1 ; 
  1442.   {
  1443.     if ( poolptr + namelength > poolsize ) 
  1444.     overflow ( 128 , poolsize - initpoolptr ) ; 
  1445.   } 
  1446.   if ( ( xord [ realnameoffile [ 1 ] ] == 46 ) && ( xord [ realnameoffile [ 2 
  1447.   ] ] == 47 ) ) 
  1448.   kstart = 3 ; 
  1449.   else kstart = 1 ; 
  1450.   {register integer for_end; k = kstart ; for_end = namelength ; if ( k <= 
  1451.   for_end) do 
  1452.     {
  1453.       strpool [ poolptr ] = xord [ realnameoffile [ k ] ] ; 
  1454.       incr ( poolptr ) ; 
  1455.     } 
  1456.   while ( k++ < for_end ) ; } 
  1457.   Result = makestring () ; 
  1458.   return(Result) ; 
  1459. scanfilename () {
  1460.     /* 30 */ scanfilename_regmem 
  1461.   nameinprogress = true ; 
  1462.   beginname () ; 
  1463.   do {
  1464.       getxtoken () ; 
  1465.   } while ( ! ( curcmd != 10 ) ) ; 
  1466.   while ( true ) {
  1467.       
  1468.     if ( ( curcmd > 12 ) || ( curchr > 127 ) ) 
  1469.     {
  1470.       backinput () ; 
  1471.       goto lab30 ; 
  1472.     } 
  1473.     if ( ! morename ( curchr ) ) 
  1474.     goto lab30 ; 
  1475.     getxtoken () ; 
  1476.   } 
  1477.   lab30: endname () ; 
  1478.   nameinprogress = false ; 
  1479. zpackjobname ( s ) 
  1480. strnumber s ; 
  1481. {packjobname_regmem 
  1482.   curarea = 206 ; 
  1483.   curext = s ; 
  1484.   curname = jobname ; 
  1485.   packfilename ( curname , curarea , curext ) ; 
  1486. zpromptfilename ( s , e ) 
  1487. strnumber s , e ; 
  1488. {/* 30 */ promptfilename_regmem 
  1489.   integer k  ; 
  1490.   if ( interaction == 2 ) 
  1491.   wakeupterminal () ; 
  1492.   if ( s == 640 ) 
  1493.   {
  1494.     if ( interaction == 3 ) 
  1495.     wakeupterminal () ; 
  1496.     printnl ( 133 ) ; 
  1497.     print ( 641 ) ; 
  1498.   } 
  1499.   else {
  1500.       
  1501.     if ( interaction == 3 ) 
  1502.     wakeupterminal () ; 
  1503.     printnl ( 133 ) ; 
  1504.     print ( 642 ) ; 
  1505.   } 
  1506.   printfilename ( curname , curarea , curext ) ; 
  1507.   print ( 643 ) ; 
  1508.   if ( e == 644 ) 
  1509.   showcontext () ; 
  1510.   printnl ( 645 ) ; 
  1511.   print ( s ) ; 
  1512.   if ( interaction < 2 ) 
  1513.   fatalerror ( 646 ) ; 
  1514.   clearterminal () ; 
  1515.   {
  1516.     wakeupterminal () ; 
  1517.     print ( 426 ) ; 
  1518.     terminput () ; 
  1519.   } 
  1520.   {
  1521.     beginname () ; 
  1522.     k = first ; 
  1523.     while ( ( buffer [ k ] == 32 ) && ( k < last ) ) incr ( k ) ; 
  1524.     while ( true ) {
  1525.     
  1526.       if ( k == last ) 
  1527.       goto lab30 ; 
  1528.       if ( ! morename ( buffer [ k ] ) ) 
  1529.       goto lab30 ; 
  1530.       incr ( k ) ; 
  1531.     } 
  1532.     lab30: endname () ; 
  1533.   } 
  1534.   if ( curext == 206 ) 
  1535.   curext = e ; 
  1536.   packfilename ( curname , curarea , curext ) ; 
  1537. openlogfile () {
  1538.     openlogfile_regmem 
  1539.   schar oldsetting  ; 
  1540.   integer k  ; 
  1541.   integer l  ; 
  1542.   ccharpointer months  ; 
  1543.   oldsetting = selector ; 
  1544.   if ( jobname == 0 ) 
  1545.   jobname = 649 ; 
  1546.   packjobname ( 650 ) ; 
  1547.   while ( ! aopenout ( logfile ) ) {
  1548.       
  1549.     if ( interaction < 2 ) 
  1550.     {
  1551.       {
  1552.     if ( interaction == 3 ) 
  1553.     wakeupterminal () ; 
  1554.     printnl ( 133 ) ; 
  1555.     print ( 642 ) ; 
  1556.       } 
  1557.       printfilename ( curname , curarea , curext ) ; 
  1558.       print ( 643 ) ; 
  1559.       jobname = 0 ; 
  1560.       history = 3 ; 
  1561.       jumpout () ; 
  1562.     } 
  1563.     promptfilename ( 652 , 650 ) ; 
  1564.   } 
  1565.   logname = amakenamestring ( logfile ) ; 
  1566.   selector = 18 ; 
  1567.   {
  1568.     (void) Fputs( logfile ,  "This is TeX, C Version 2.9" ) ; 
  1569.     print ( formatident ) ; 
  1570.     print ( 653 ) ; 
  1571.     printint ( eqtb [ 5288 ] .cint ) ; 
  1572.     printchar ( 32 ) ; 
  1573.     months = " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" ; 
  1574.     {register integer for_end; k = 3 * eqtb [ 5289 ] .cint - 2 ; for_end = 3 
  1575.     * eqtb [ 5289 ] .cint ; if ( k <= for_end) do 
  1576.       (void) putc( months [ k ] ,  logfile );
  1577.     while ( k++ < for_end ) ; } 
  1578.     printchar ( 32 ) ; 
  1579.     printint ( eqtb [ 5290 ] .cint ) ; 
  1580.     printchar ( 32 ) ; 
  1581.     printtwo ( eqtb [ 5287 ] .cint / 60 ) ; 
  1582.     printchar ( 58 ) ; 
  1583.     printtwo ( eqtb [ 5287 ] .cint % 60 ) ; 
  1584.   } 
  1585.   inputstack [ inputptr ] = curinput ; 
  1586.   printnl ( 651 ) ; 
  1587.   l = inputstack [ 0 ] .limitfield ; 
  1588.   if ( buffer [ l ] == eqtb [ 5315 ] .cint ) 
  1589.   decr ( l ) ; 
  1590.   {register integer for_end; k = 1 ; for_end = l ; if ( k <= for_end) do 
  1591.     print ( buffer [ k ] ) ; 
  1592.   while ( k++ < for_end ) ; } 
  1593.   println () ; 
  1594.   selector = oldsetting + 2 ; 
  1595. startinput () {
  1596.     /* 30 */ startinput_regmem 
  1597.   scanfilename () ; 
  1598.   if ( curext == 206 ) 
  1599.   curext = 644 ; 
  1600.   packfilename ( curname , curarea , curext ) ; 
  1601.   while ( true ) {
  1602.       
  1603.     beginfilereading () ; 
  1604.     if ( aopenin ( inputfile [ curinput .indexfield ] , inputpathspec ) ) 
  1605.     goto lab30 ; 
  1606.     endfilereading () ; 
  1607.     promptfilename ( 640 , 644 ) ; 
  1608.   } 
  1609.   lab30: curinput .namefield = amakenamestring ( inputfile [ curinput 
  1610.   .indexfield ] ) ; 
  1611.   if ( jobname == 0 ) 
  1612.   {
  1613.     jobname = curname ; 
  1614.     openlogfile () ; 
  1615.   } 
  1616.   if ( termoffset + ( strstart [ curinput .namefield + 1 ] - strstart [ 
  1617.   curinput .namefield ] ) > maxprintline - 2 ) 
  1618.   println () ; 
  1619.   else if ( ( termoffset > 0 ) || ( fileoffset > 0 ) ) 
  1620.   printchar ( 32 ) ; 
  1621.   printchar ( 40 ) ; 
  1622.   print ( curinput .namefield ) ; 
  1623.   termflush ( stdout ) ; 
  1624.   curinput .statefield = 33 ; 
  1625.   {
  1626.     if ( ! inputln ( inputfile [ curinput .indexfield ] , false ) ) 
  1627.     ; 
  1628.     firmuptheline () ; 
  1629.     if ( ( eqtb [ 5315 ] .cint < 0 ) || ( eqtb [ 5315 ] .cint > 127 ) ) 
  1630.     decr ( curinput .limitfield ) ; 
  1631.     else buffer [ curinput .limitfield ] = eqtb [ 5315 ] .cint ; 
  1632.     first = curinput .limitfield + 1 ; 
  1633.     curinput .locfield = curinput .startfield ; 
  1634.     line = 1 ; 
  1635.   } 
  1636. internalfontnumber zreadfontinfo ( u , nom , aire , s ) 
  1637. halfword u ; 
  1638. strnumber nom , aire ; 
  1639. scaled s ; 
  1640. {/* 30 11 45 */ register internalfontnumber Result; 
  1641.   readfontinfo_regmem 
  1642.   integer k  ; 
  1643.   boolean fileopened  ; 
  1644.   halfword lf, lh, bc, ec, nw, nh, nd, ni, nl, nk, ne, np  ; 
  1645.   internalfontnumber f  ; 
  1646.   internalfontnumber g  ; 
  1647.   eightbits a, b, c, d  ; 
  1648.   fourquarters qw  ; 
  1649.   scaled sw  ; 
  1650.   scaled z  ; 
  1651.   integer alpha  ; 
  1652.   schar beta  ; 
  1653.   g = 0 ; 
  1654.   fileopened = false ; 
  1655.   packfilename ( nom , aire , 664 ) ; 
  1656.   if ( ! bopenin ( tfmfile ) ) 
  1657.   goto lab11 ; 
  1658.   fileopened = true ; 
  1659.   {
  1660.     {
  1661.       lf = tfmtemp ; 
  1662.       if ( lf > 127 ) 
  1663.       goto lab11 ; 
  1664.       tfmtemp = getc ( tfmfile ) ; 
  1665.       lf = lf * 256 + tfmtemp ; 
  1666.     } 
  1667.     tfmtemp = getc ( tfmfile ) ; 
  1668.     {
  1669.       lh = tfmtemp ; 
  1670.       if ( lh > 127 ) 
  1671.       goto lab11 ; 
  1672.       tfmtemp = getc ( tfmfile ) ; 
  1673.       lh = lh * 256 + tfmtemp ; 
  1674.     } 
  1675.     tfmtemp = getc ( tfmfile ) ; 
  1676.     {
  1677.       bc = tfmtemp ; 
  1678.       if ( bc > 127 ) 
  1679.       goto lab11 ; 
  1680.       tfmtemp = getc ( tfmfile ) ; 
  1681.       bc = bc * 256 + tfmtemp ; 
  1682.     } 
  1683.     tfmtemp = getc ( tfmfile ) ; 
  1684.     {
  1685.       ec = tfmtemp ; 
  1686.       if ( ec > 127 ) 
  1687.       goto lab11 ; 
  1688.       tfmtemp = getc ( tfmfile ) ; 
  1689.       ec = ec * 256 + tfmtemp ; 
  1690.     } 
  1691.     if ( ( bc > ec + 1 ) || ( ec > 255 ) ) 
  1692.     goto lab11 ; 
  1693.     tfmtemp = getc ( tfmfile ) ; 
  1694.     {
  1695.       nw = tfmtemp ; 
  1696.       if ( nw > 127 ) 
  1697.       goto lab11 ; 
  1698.       tfmtemp = getc ( tfmfile ) ; 
  1699.       nw = nw * 256 + tfmtemp ; 
  1700.     } 
  1701.     tfmtemp = getc ( tfmfile ) ; 
  1702.     {
  1703.       nh = tfmtemp ; 
  1704.       if ( nh > 127 ) 
  1705.       goto lab11 ; 
  1706.       tfmtemp = getc ( tfmfile ) ; 
  1707.       nh = nh * 256 + tfmtemp ; 
  1708.     } 
  1709.     tfmtemp = getc ( tfmfile ) ; 
  1710.     {
  1711.       nd = tfmtemp ; 
  1712.       if ( nd > 127 ) 
  1713.       goto lab11 ; 
  1714.       tfmtemp = getc ( tfmfile ) ; 
  1715.       nd = nd * 256 + tfmtemp ; 
  1716.     } 
  1717.     tfmtemp = getc ( tfmfile ) ; 
  1718.     {
  1719.       ni = tfmtemp ; 
  1720.       if ( ni > 127 ) 
  1721.       goto lab11 ; 
  1722.       tfmtemp = getc ( tfmfile ) ; 
  1723.       ni = ni * 256 + tfmtemp ; 
  1724.     } 
  1725.     tfmtemp = getc ( tfmfile ) ; 
  1726.     {
  1727.       nl = tfmtemp ; 
  1728.       if ( nl > 127 ) 
  1729.       goto lab11 ; 
  1730.       tfmtemp = getc ( tfmfile ) ; 
  1731.       nl = nl * 256 + tfmtemp ; 
  1732.     } 
  1733.     tfmtemp = getc ( tfmfile ) ; 
  1734.     {
  1735.       nk = tfmtemp ; 
  1736.       if ( nk > 127 ) 
  1737.       goto lab11 ; 
  1738.       tfmtemp = getc ( tfmfile ) ; 
  1739.       nk = nk * 256 + tfmtemp ; 
  1740.     } 
  1741.     tfmtemp = getc ( tfmfile ) ; 
  1742.     {
  1743.       ne = tfmtemp ; 
  1744.       if ( ne > 127 ) 
  1745.       goto lab11 ; 
  1746.       tfmtemp = getc ( tfmfile ) ; 
  1747.       ne = ne * 256 + tfmtemp ; 
  1748.     } 
  1749.     tfmtemp = getc ( tfmfile ) ; 
  1750.     {
  1751.       np = tfmtemp ; 
  1752.       if ( np > 127 ) 
  1753.       goto lab11 ; 
  1754.       tfmtemp = getc ( tfmfile ) ; 
  1755.       np = np * 256 + tfmtemp ; 
  1756.     } 
  1757.     if ( lf != 6 + lh + ( ec - bc + 1 ) + nw + nh + nd + ni + nl + nk + ne + 
  1758.     np ) 
  1759.     goto lab11 ; 
  1760.   } 
  1761.   lf = lf - 6 - lh ; 
  1762.   if ( np < 7 ) 
  1763.   lf = lf + 7 - np ; 
  1764.   if ( ( fontptr == fontmax ) || ( fmemptr + lf > fontmemsize ) ) 
  1765.   {
  1766.     {
  1767.       if ( interaction == 3 ) 
  1768.       wakeupterminal () ; 
  1769.       printnl ( 133 ) ; 
  1770.       print ( 655 ) ; 
  1771.     } 
  1772.     sprintcs ( u ) ; 
  1773.     printchar ( 61 ) ; 
  1774.     printfilename ( nom , aire , 206 ) ; 
  1775.     if ( s >= 0 ) 
  1776.     {
  1777.       print ( 598 ) ; 
  1778.       printscaled ( s ) ; 
  1779.       print ( 262 ) ; 
  1780.     } 
  1781.     else if ( s != -1000 ) 
  1782.     {
  1783.       print ( 656 ) ; 
  1784.       printint ( - (integer) s ) ; 
  1785.     } 
  1786.     print ( 665 ) ; 
  1787.     {
  1788.       helpptr = 4 ; 
  1789.       helpline [ 3 ] = 666 ; 
  1790.       helpline [ 2 ] = 667 ; 
  1791.       helpline [ 1 ] = 668 ; 
  1792.       helpline [ 0 ] = 669 ; 
  1793.     } 
  1794.     error () ; 
  1795.     goto lab30 ; 
  1796.   } 
  1797.   f = fontptr + 1 ; 
  1798.   charbase [ f ] = fmemptr - bc ; 
  1799.   widthbase [ f ] = charbase [ f ] + ec + 1 ; 
  1800.   heightbase [ f ] = widthbase [ f ] + nw ; 
  1801.   depthbase [ f ] = heightbase [ f ] + nh ; 
  1802.   italicbase [ f ] = depthbase [ f ] + nd ; 
  1803.   ligkernbase [ f ] = italicbase [ f ] + ni ; 
  1804.   kernbase [ f ] = ligkernbase [ f ] + nl ; 
  1805.   extenbase [ f ] = kernbase [ f ] + nk ; 
  1806.   parambase [ f ] = extenbase [ f ] + ne ; 
  1807.   {
  1808.     if ( lh < 2 ) 
  1809.     goto lab11 ; 
  1810.     {
  1811.       tfmtemp = getc ( tfmfile ) ; 
  1812.       a = tfmtemp ; 
  1813.       qw .b0 = a ; 
  1814.       tfmtemp = getc ( tfmfile ) ; 
  1815.       b = tfmtemp ; 
  1816.       qw .b1 = b ; 
  1817.       tfmtemp = getc ( tfmfile ) ; 
  1818.       c = tfmtemp ; 
  1819.       qw .b2 = c ; 
  1820.       tfmtemp = getc ( tfmfile ) ; 
  1821.       d = tfmtemp ; 
  1822.       qw .b3 = d ; 
  1823.       fontcheck [ f ] = qw ; 
  1824.     } 
  1825.     tfmtemp = getc ( tfmfile ) ; 
  1826.     {
  1827.       z = tfmtemp ; 
  1828.       if ( z > 127 ) 
  1829.       goto lab11 ; 
  1830.       tfmtemp = getc ( tfmfile ) ; 
  1831.       z = z * 256 + tfmtemp ; 
  1832.     } 
  1833.     tfmtemp = getc ( tfmfile ) ; 
  1834.     z = z * 256 + tfmtemp ; 
  1835.     tfmtemp = getc ( tfmfile ) ; 
  1836.     z = ( z * 16 ) + ( tfmtemp / 16 ) ; 
  1837.     if ( z < 65536L ) 
  1838.     goto lab11 ; 
  1839.     while ( lh > 2 ) {
  1840.     
  1841.       tfmtemp = getc ( tfmfile ) ; 
  1842.       tfmtemp = getc ( tfmfile ) ; 
  1843.       tfmtemp = getc ( tfmfile ) ; 
  1844.       tfmtemp = getc ( tfmfile ) ; 
  1845.       decr ( lh ) ; 
  1846.     } 
  1847.     fontdsize [ f ] = z ; 
  1848.     if ( s != -1000 ) 
  1849.     if ( s >= 0 ) 
  1850.     z = s ; 
  1851.     else z = xnoverd ( z , - (integer) s , 1000 ) ; 
  1852.     fontsize [ f ] = z ; 
  1853.   } 
  1854.   {register integer for_end; k = fmemptr ; for_end = widthbase [ f ] - 1 
  1855.   ; if ( k <= for_end) do 
  1856.     {
  1857.       {
  1858.     tfmtemp = getc ( tfmfile ) ; 
  1859.     a = tfmtemp ; 
  1860.     qw .b0 = a ; 
  1861.     tfmtemp = getc ( tfmfile ) ; 
  1862.     b = tfmtemp ; 
  1863.     qw .b1 = b ; 
  1864.     tfmtemp = getc ( tfmfile ) ; 
  1865.     c = tfmtemp ; 
  1866.     qw .b2 = c ; 
  1867.     tfmtemp = getc ( tfmfile ) ; 
  1868.     d = tfmtemp ; 
  1869.     qw .b3 = d ; 
  1870.     fontinfo [ k ] .qqqq = qw ; 
  1871.       } 
  1872.       if ( ( a >= nw ) || ( b / 16 >= nh ) || ( b % 16 >= nd ) || ( c / 4 >= 
  1873.       ni ) ) 
  1874.       goto lab11 ; 
  1875.       switch ( c % 4 ) 
  1876.       {case 1 : 
  1877.     if ( d >= nl ) 
  1878.     goto lab11 ; 
  1879.     break ; 
  1880.       case 3 : 
  1881.     if ( d >= ne ) 
  1882.     goto lab11 ; 
  1883.     break ; 
  1884.       case 2 : 
  1885.     {
  1886.       {
  1887.         if ( ( d < bc ) || ( d > ec ) ) 
  1888.         goto lab11 ; 
  1889.       } 
  1890.       while ( d < k + bc - fmemptr ) {
  1891.           
  1892.         qw = fontinfo [ charbase [ f ] + d ] .qqqq ; 
  1893.         if ( ( ( qw .b2 ) % 4 ) != 2 ) 
  1894.         goto lab45 ; 
  1895.         d = qw .b3 ; 
  1896.       } 
  1897.       if ( d == k + bc - fmemptr ) 
  1898.       goto lab11 ; 
  1899.       lab45: ; 
  1900.     } 
  1901.     break ; 
  1902.     default: 
  1903.     ; 
  1904.     break ; 
  1905.       } 
  1906.     } 
  1907.   while ( k++ < for_end ) ; } 
  1908.   {
  1909.     {
  1910.       alpha = 16 ; 
  1911.       while ( z >= 8388608L ) {
  1912.       
  1913.     z = z / 2 ; 
  1914.     alpha = alpha + alpha ; 
  1915.       } 
  1916.       beta = 256 / alpha ; 
  1917.       alpha = alpha * z ; 
  1918.     } 
  1919.     {register integer for_end; k = widthbase [ f ] ; for_end = ligkernbase [ 
  1920.     f ] - 1 ; if ( k <= for_end) do 
  1921.       {
  1922.     tfmtemp = getc ( tfmfile ) ; 
  1923.     a = tfmtemp ; 
  1924.     tfmtemp = getc ( tfmfile ) ; 
  1925.     b = tfmtemp ; 
  1926.     tfmtemp = getc ( tfmfile ) ; 
  1927.     c = tfmtemp ; 
  1928.     tfmtemp = getc ( tfmfile ) ; 
  1929.     d = tfmtemp ; 
  1930.     sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / 
  1931.     beta ; 
  1932.     if ( a == 0 ) 
  1933.     fontinfo [ k ] .cint = sw ; 
  1934.     else if ( a == 255 ) 
  1935.     fontinfo [ k ] .cint = sw - alpha ; 
  1936.     else goto lab11 ; 
  1937.       } 
  1938.     while ( k++ < for_end ) ; } 
  1939.     if ( fontinfo [ widthbase [ f ] ] .cint != 0 ) 
  1940.     goto lab11 ; 
  1941.     if ( fontinfo [ heightbase [ f ] ] .cint != 0 ) 
  1942.     goto lab11 ; 
  1943.     if ( fontinfo [ depthbase [ f ] ] .cint != 0 ) 
  1944.     goto lab11 ; 
  1945.     if ( fontinfo [ italicbase [ f ] ] .cint != 0 ) 
  1946.     goto lab11 ; 
  1947.   } 
  1948.   {
  1949.     {register integer for_end; k = ligkernbase [ f ] ; for_end = kernbase [ f 
  1950.     ] - 1 ; if ( k <= for_end) do 
  1951.       {
  1952.     {
  1953.       tfmtemp = getc ( tfmfile ) ; 
  1954.       a = tfmtemp ; 
  1955.       qw .b0 = a ; 
  1956.       tfmtemp = getc ( tfmfile ) ; 
  1957.       b = tfmtemp ; 
  1958.       qw .b1 = b ; 
  1959.       tfmtemp = getc ( tfmfile ) ; 
  1960.       c = tfmtemp ; 
  1961.       qw .b2 = c ; 
  1962.       tfmtemp = getc ( tfmfile ) ; 
  1963.       d = tfmtemp ; 
  1964.       qw .b3 = d ; 
  1965.       fontinfo [ k ] .qqqq = qw ; 
  1966.     } 
  1967.     {
  1968.       if ( ( b < bc ) || ( b > ec ) ) 
  1969.       goto lab11 ; 
  1970.     } 
  1971.     if ( c < 128 ) 
  1972.     {
  1973.       if ( ( d < bc ) || ( d > ec ) ) 
  1974.       goto lab11 ; 
  1975.     } 
  1976.     else if ( d >= nk ) 
  1977.     goto lab11 ; 
  1978.       } 
  1979.     while ( k++ < for_end ) ; } 
  1980.     if ( ( nl > 0 ) && ( a < 128 ) ) 
  1981.     goto lab11 ; 
  1982.     {register integer for_end; k = kernbase [ f ] ; for_end = extenbase [ f ] 
  1983.     - 1 ; if ( k <= for_end) do 
  1984.       {
  1985.     tfmtemp = getc ( tfmfile ) ; 
  1986.     a = tfmtemp ; 
  1987.     tfmtemp = getc ( tfmfile ) ; 
  1988.     b = tfmtemp ; 
  1989.     tfmtemp = getc ( tfmfile ) ; 
  1990.     c = tfmtemp ; 
  1991.     tfmtemp = getc ( tfmfile ) ; 
  1992.     d = tfmtemp ; 
  1993.     sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / 
  1994.     beta ; 
  1995.     if ( a == 0 ) 
  1996.     fontinfo [ k ] .cint = sw ; 
  1997.     else if ( a == 255 ) 
  1998.     fontinfo [ k ] .cint = sw - alpha ; 
  1999.     else goto lab11 ; 
  2000.       } 
  2001.     while ( k++ < for_end ) ; } 
  2002.   } 
  2003.   {register integer for_end; k = extenbase [ f ] ; for_end = parambase [ f ] 
  2004.   - 1 ; if ( k <= for_end) do 
  2005.     {
  2006.       {
  2007.     tfmtemp = getc ( tfmfile ) ; 
  2008.     a = tfmtemp ; 
  2009.     qw .b0 = a ; 
  2010.     tfmtemp = getc ( tfmfile ) ; 
  2011.     b = tfmtemp ; 
  2012.     qw .b1 = b ; 
  2013.     tfmtemp = getc ( tfmfile ) ; 
  2014.     c = tfmtemp ; 
  2015.     qw .b2 = c ; 
  2016.     tfmtemp = getc ( tfmfile ) ; 
  2017.     d = tfmtemp ; 
  2018.     qw .b3 = d ; 
  2019.     fontinfo [ k ] .qqqq = qw ; 
  2020.       } 
  2021.       if ( a != 0 ) 
  2022.       {
  2023.     if ( ( a < bc ) || ( a > ec ) ) 
  2024.     goto lab11 ; 
  2025.       } 
  2026.       if ( b != 0 ) 
  2027.       {
  2028.     if ( ( b < bc ) || ( b > ec ) ) 
  2029.     goto lab11 ; 
  2030.       } 
  2031.       if ( c != 0 ) 
  2032.       {
  2033.     if ( ( c < bc ) || ( c > ec ) ) 
  2034.     goto lab11 ; 
  2035.       } 
  2036.       {
  2037.     if ( ( d < bc ) || ( d > ec ) ) 
  2038.     goto lab11 ; 
  2039.       } 
  2040.     } 
  2041.   while ( k++ < for_end ) ; } 
  2042.   {
  2043.     {register integer for_end; k = 1 ; for_end = np ; if ( k <= for_end) do 
  2044.       if ( k == 1 ) 
  2045.       {
  2046.     tfmtemp = getc ( tfmfile ) ; 
  2047.     sw = tfmtemp ; 
  2048.     if ( sw > 127 ) 
  2049.     sw = sw - 256 ; 
  2050.     tfmtemp = getc ( tfmfile ) ; 
  2051.     sw = sw * 256 + tfmtemp ; 
  2052.     tfmtemp = getc ( tfmfile ) ; 
  2053.     sw = sw * 256 + tfmtemp ; 
  2054.     tfmtemp = getc ( tfmfile ) ; 
  2055.     fontinfo [ parambase [ f ] ] .cint = ( sw * 16 ) + ( tfmtemp / 16 ) ; 
  2056.       } 
  2057.       else {
  2058.       
  2059.     tfmtemp = getc ( tfmfile ) ; 
  2060.     a = tfmtemp ; 
  2061.     tfmtemp = getc ( tfmfile ) ; 
  2062.     b = tfmtemp ; 
  2063.     tfmtemp = getc ( tfmfile ) ; 
  2064.     c = tfmtemp ; 
  2065.     tfmtemp = getc ( tfmfile ) ; 
  2066.     d = tfmtemp ; 
  2067.     sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / 
  2068.     beta ; 
  2069.     if ( a == 0 ) 
  2070.     fontinfo [ parambase [ f ] + k - 1 ] .cint = sw ; 
  2071.     else if ( a == 255 ) 
  2072.     fontinfo [ parambase [ f ] + k - 1 ] .cint = sw - alpha ; 
  2073.     else goto lab11 ; 
  2074.       } 
  2075.     while ( k++ < for_end ) ; } 
  2076.     if ( eof ( tfmfile ) ) 
  2077.     goto lab11 ; 
  2078.     {register integer for_end; k = np + 1 ; for_end = 7 ; if ( k <= for_end) 
  2079.     do 
  2080.       fontinfo [ parambase [ f ] + k - 1 ] .cint = 0 ; 
  2081.     while ( k++ < for_end ) ; } 
  2082.   } 
  2083.   if ( np >= 7 ) 
  2084.   fontparams [ f ] = np ; 
  2085.   else fontparams [ f ] = 7 ; 
  2086.   hyphenchar [ f ] = eqtb [ 5313 ] .cint ; 
  2087.   skewchar [ f ] = eqtb [ 5314 ] .cint ; 
  2088.   fontname [ f ] = nom ; 
  2089.   fontarea [ f ] = aire ; 
  2090.   fontbc [ f ] = bc ; 
  2091.   fontec [ f ] = ec ; 
  2092.   fontglue [ f ] = 0 ; 
  2093.   charbase [ f ] = charbase [ f ] ; 
  2094.   widthbase [ f ] = widthbase [ f ] ; 
  2095.   ligkernbase [ f ] = ligkernbase [ f ] ; 
  2096.   kernbase [ f ] = kernbase [ f ] ; 
  2097.   extenbase [ f ] = extenbase [ f ] ; 
  2098.   decr ( parambase [ f ] ) ; 
  2099.   fmemptr = fmemptr + lf ; 
  2100.   fontptr = f ; 
  2101.   g = f ; 
  2102.   goto lab30 ; 
  2103.   lab11: {
  2104.       
  2105.     if ( interaction == 3 ) 
  2106.     wakeupterminal () ; 
  2107.     printnl ( 133 ) ; 
  2108.     print ( 655 ) ; 
  2109.   } 
  2110.   sprintcs ( u ) ; 
  2111.   printchar ( 61 ) ; 
  2112.   printfilename ( nom , aire , 206 ) ; 
  2113.   if ( s >= 0 ) 
  2114.   {
  2115.     print ( 598 ) ; 
  2116.     printscaled ( s ) ; 
  2117.     print ( 262 ) ; 
  2118.   } 
  2119.   else if ( s != -1000 ) 
  2120.   {
  2121.     print ( 656 ) ; 
  2122.     printint ( - (integer) s ) ; 
  2123.   } 
  2124.   if ( fileopened ) 
  2125.   print ( 657 ) ; 
  2126.   else print ( 658 ) ; 
  2127.   {
  2128.     helpptr = 5 ; 
  2129.     helpline [ 4 ] = 659 ; 
  2130.     helpline [ 3 ] = 660 ; 
  2131.     helpline [ 2 ] = 661 ; 
  2132.     helpline [ 1 ] = 662 ; 
  2133.     helpline [ 0 ] = 663 ; 
  2134.   } 
  2135.   error () ; 
  2136.   lab30: if ( fileopened ) 
  2137.   bclose ( tfmfile ) ; 
  2138.   Result = g ; 
  2139.   return(Result) ; 
  2140.